<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright © 2017-2024 Petr Panteleyev <petr-panteleyev@yandex.ru>
  SPDX-License-Identifier: BSD-2-Clause
  -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.panteleyev.money</groupId>
    <artifactId>money-manager-parent</artifactId>
    <version>${revision}</version>
    <packaging>pom</packaging>
    <name>Parent</name>

    <properties>
        <revision>24.7.1</revision>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.release>22</maven.compiler.release>
        <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ss'Z'</maven.build.timestamp.format>
        <timestamp>${maven.build.timestamp}</timestamp>
        <!-- Plugins -->
        <mavenResourcePluginVersion>3.3.1</mavenResourcePluginVersion>
        <mavenCompilerPluginVersion>3.13.0</mavenCompilerPluginVersion>
        <mavenJarPluginVersion>3.4.1</mavenJarPluginVersion>
        <mavenSurefirePluginVersion>3.2.5</mavenSurefirePluginVersion>
        <mavenDependencyPluginVersion>3.6.1</mavenDependencyPluginVersion>
        <javaFxPluginVersion>0.0.8</javaFxPluginVersion>
        <jpackageMavenPluginVersion>1.6.5</jpackageMavenPluginVersion>
        <flattenMavenPluginVersion>1.4.1</flattenMavenPluginVersion>
        <!-- Dependencies -->
        <javaFxVersion>22.0.1</javaFxVersion>
        <javaFxHelpersVersion>1.16.0</javaFxHelpersVersion>
        <javaFreeDesktopVersion>0.5.0</javaFreeDesktopVersion>
        <controlsFxVersion>11.2.1</controlsFxVersion>
        <jsoupVersion>1.15.3</jsoupVersion>
        <postgresVersion>42.7.2</postgresVersion>
        <freemarkerVersion>2.3.32</freemarkerVersion>
        <jacksonVersion>2.14.1</jacksonVersion>
        <apachePoiVersion>5.2.5</apachePoiVersion>
        <jUnitVersion>5.10.2</jUnitVersion>
        <liquibaseVersion>4.20.0</liquibaseVersion>
        <testContainersVersion>1.17.3</testContainersVersion>
    </properties>

    <modules>
        <module>model</module>
        <module>ofx</module>
        <module>moex</module>
        <module>desktop</module>
        <module>backend</module>
        <module>client</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.panteleyev</groupId>
                <artifactId>java-fx-helpers</artifactId>
                <version>${javaFxHelpersVersion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.openjfx</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.panteleyev</groupId>
                <artifactId>freedesktop</artifactId>
                <version>${javaFreeDesktopVersion}</version>
            </dependency>
            <dependency>
                <groupId>org.controlsfx</groupId>
                <artifactId>controlsfx</artifactId>
                <version>${controlsFxVersion}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.openjfx</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>${postgresVersion}</version>
            </dependency>
            <dependency>
                <groupId>org.jsoup</groupId>
                <artifactId>jsoup</artifactId>
                <version>${jsoupVersion}</version>
            </dependency>
            <!-- JavaFX Start -->
            <dependency>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-base</artifactId>
                <version>${javaFxVersion}</version>
            </dependency>
            <dependency>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-controls</artifactId>
                <version>${javaFxVersion}</version>
            </dependency>
            <dependency>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-media</artifactId>
                <version>${javaFxVersion}</version>
            </dependency>
            <dependency>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-graphics</artifactId>
                <version>${javaFxVersion}</version>
            </dependency>
            <!-- JavaFX End -->
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>${freemarkerVersion}</version>
            </dependency>
            <dependency>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-core</artifactId>
                <version>${liquibaseVersion}</version>
            </dependency>
            <!-- Jackson -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jacksonVersion}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.datatype</groupId>
                <artifactId>jackson-datatype-jsr310</artifactId>
                <version>${jacksonVersion}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.datatype</groupId>
                <artifactId>jackson-datatype-jdk8</artifactId>
                <version>${jacksonVersion}</version>
            </dependency>
            <!-- Apache POI -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>${apachePoiVersion}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>${apachePoiVersion}</version>
            </dependency>
            <!-- Test -->
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers-bom</artifactId>
                <version>${testContainersVersion}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-swing</artifactId>
                <version>${javaFxVersion}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter</artifactId>
                <version>${jUnitVersion}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>${mavenResourcePluginVersion}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${mavenCompilerPluginVersion}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${mavenJarPluginVersion}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>${mavenDependencyPluginVersion}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${mavenSurefirePluginVersion}</version>
                </plugin>
                <plugin>
                    <groupId>org.panteleyev</groupId>
                    <artifactId>jpackage-maven-plugin</artifactId>
                    <version>${jpackageMavenPluginVersion}</version>
                </plugin>
                <plugin>
                    <groupId>org.openjfx</groupId>
                    <artifactId>javafx-maven-plugin</artifactId>
                    <version>${javaFxPluginVersion}</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>flatten-maven-plugin</artifactId>
                <version>${flattenMavenPluginVersion}</version>
                <configuration>
                    <updatePomFile>true</updatePomFile>
                    <flattenMode>resolveCiFriendliesOnly</flattenMode>
                </configuration>
                <executions>
                    <execution>
                        <id>flatten</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>flatten</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>flatten.clean</id>
                        <phase>clean</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
